package com.ruoyi.site.mapper;

import java.util.List;
import com.ruoyi.site.domain.UserLicenses;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 用户授权Mapper接口
 */
@Mapper
public interface UserLicensesMapper
{
    /**
     * 新增用户授权
     */
    int insertUserLicenses(UserLicenses userLicenses);

    /**
     * 查询用户授权列表
     */
    List<UserLicenses> selectUserLicensesList(UserLicenses userLicenses);

    /**
     * 根据用户和产品信息查询授权记录 (用于下载权限检查)
     */
    int countUserLicenses(
            @Param("userId") Long userId,
            @Param("productId") Long productId,
            @Param("productType") String productType);

    /**
     * 增加授权记录的下载次数
     */
    int incrementDownloadCount(Long licenseId);

    /**
     * 根据用户和产品信息查询授权ID列表
     * @return 符合条件的 licenseId 列表
     */
    List<Long> selectLicenseIdsByProduct(
            @Param("userId") Long userId,
            @Param("productId") Long productId,
            @Param("productType") String productType);

    /**
     * 根据授权ID查询用户授权详情
     * @param licenseId 授权ID
     * @return 用户授权
     */
    UserLicenses selectUserLicensesByLicenseId(Long licenseId); // 对应 selectById

    /**
     * 修改用户授权
     * @param userLicenses 用户授权
     * @return 结果
     */
    int updateUserLicenses(UserLicenses userLicenses); // 对应 update

    /**
     * 删除用户授权
     * @param licenseId 授权ID
     * @return 结果
     */
    int deleteUserLicensesByLicenseId(Long licenseId); // 对应 delete

    /**
     * 批量删除用户授权
     * @param licenseIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteUserLicensesByLicenseIds(Long[] licenseIds); // 对应 delete 批量
}